﻿#pragma warning disable IDE1006
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WUDI.ECharts.Title
{
	/// <summary>
	/// 标题组件，包含主标题和副标题
	/// <para>
	/// 在 ECharts 2.x 中单个 ECharts 实例最多只能拥有一个标题组件
	/// </para>
	/// <para>
	/// 但是在 ECharts 3 中可以存在任意多个标题组件，这在需要标题进行排版，或者单个实例中的多个图表都需要标题时会比较有用
	/// </para>
	/// </summary>
	public class Title
	{

		/// <summary>
		/// 组件 ID。默认不指定。指定则可用于在 option 或者 API 中引用组件。
		/// </summary>
		public dynamic id { get; set; } 

		/// <summary>
		/// 是否显示标题组件。
		/// </summary>
		public dynamic show { get; set; }  = true;

		/// <summary>
		/// 主标题文本，支持使用 \n 换行。
		/// </summary>
		public dynamic text { get; set; }  = "";

		/// <summary>
		/// 主标题文本超链接。
		/// </summary>
		public dynamic link { get; set; }  = "";

		/// <summary>
		/// 指定窗口打开主标题超链接。
		/// self 当前窗口打开
		/// blank 新窗口打开
		/// </summary>
		public WUDI.ECharts.Target target { get; set; }  = WUDI.ECharts.Target.blank;

		public WUDI.ECharts.Title.TextStyle textStyle { get; set; } 

		/// <summary>
		/// 副标题文本，支持使用 \n 换行。
		/// </summary>
		public dynamic subtext { get; set; }  = "";

		/// <summary>
		/// 副标题文本超链接。
		/// </summary>
		public dynamic sublink { get; set; }  = "";

		/// <summary>
		/// self 当前窗口打开
		/// blank 新窗口打开
		/// </summary>
		public WUDI.ECharts.Subtarget subtarget { get; set; }  = WUDI.ECharts.Subtarget.blank;

		public WUDI.ECharts.Title.SubtextStyle subtextStyle { get; set; } 

		/// <summary>
		/// 整体（包括 text 和 subtext）的水平对齐
		/// <para>
		/// 可选值
		/// </para>
		/// <para>
		/// auto、left、right、center
		/// </para>
		/// </summary>
		public WUDI.ECharts.TextAlign textAlign { get; set; }  = WUDI.ECharts.TextAlign.auto;

		/// <summary>
		/// 整体（包括 text 和 subtext）的垂直对齐
		/// <para>
		/// 可选值
		/// </para>
		/// <para>
		/// auto、top、bottom、middle
		/// </para>
		/// </summary>
		public WUDI.ECharts.TextVerticalAlign textVerticalAlign { get; set; }  = WUDI.ECharts.TextVerticalAlign.auto;

		/// <summary>
		/// 是否触发事件。
		/// </summary>
		public dynamic triggerEvent { get; set; }  = false;

		/// <summary>
		/// 标题内边距，单位px，默认各方向内边距为5，接受数组分别设定上右下左边距。
		/// <para>number/Array</para>
		/// </summary>
		public dynamic padding { get; set; }  = 5;

		/// <summary>
		/// 主副标题之间的间距。
		/// </summary>
		public dynamic itemGap { get; set; }  = 10;

		/// <summary>
		/// 所有图形的 zlevel 值
		/// <para>
		/// zlevel用于 Canvas 分层，不同zlevel值的图形会放置在不同的 Canvas 中，Canvas 分层是一种常见的优化手段
		/// </para>
		/// <para>
		/// 我们可以把一些图形变化频繁（例如有动画）的组件设置成一个单独的zlevel
		/// </para>
		/// <para>
		/// 需要注意的是过多的 Canvas 会引起内存开销的增大，在手机端上需要谨慎使用以防崩溃
		/// </para>
		/// <para>
		/// zlevel 大的 Canvas 会放在 zlevel 小的 Canvas 的上面
		/// </para>
		/// </summary>
		public dynamic zlevel { get; set; }  = 0;

		/// <summary>
		/// 组件的所有图形的z值
		/// <para>
		/// 控制图形的前后顺序
		/// </para>
		/// <para>
		/// z值小的图形会被z值大的图形覆盖
		/// </para>
		/// <para>
		/// z相比zlevel优先级更低，而且不会创建新的 Canvas
		/// </para>
		/// </summary>
		public dynamic z { get; set; }  = 2;

		/// <summary>
		/// title 组件离容器左侧的距离
		/// <para>
		/// left 的值可以是像 20 这样的具体像素值，可以是像 20% 这样相对于容器高宽的百分比，也可以是 left, center, right
		/// </para>
		/// <para>
		/// 如果 left 的值为left, center, right，组件会根据相应的位置自动对齐
		/// </para>
		/// </summary>
		public dynamic left { get; set; }  = "auto";

		/// <summary>
		/// title 组件离容器上侧的距离
		/// <para>
		/// top 的值可以是像 20 这样的具体像素值，可以是像 20% 这样相对于容器高宽的百分比，也可以是 top, middle, bottom
		/// </para>
		/// <para>
		/// 如果 top 的值为top, middle, bottom，组件会根据相应的位置自动对齐
		/// </para>
		/// </summary>
		public dynamic top { get; set; }  = "auto";

		/// <summary>
		/// title 组件离容器右侧的距离
		/// <para>
		/// right 的值可以是像 20 这样的具体像素值，可以是像 20% 这样相对于容器高宽的百分比
		/// </para>
		/// <para>
		/// 默认自适应
		/// </para>
		/// </summary>
		public dynamic right { get; set; }  = "auto";

		/// <summary>
		/// title 组件离容器下侧的距离
		/// <para>
		/// bottom 的值可以是像 20 这样的具体像素值，可以是像 20% 这样相对于容器高宽的百分比
		/// </para>
		/// <para>
		/// 默认自适应
		/// </para>
		/// </summary>
		public dynamic bottom { get; set; }  = "auto";

		/// <summary>
		/// 标题背景色，默认透明
		/// <para>
		/// 颜色可以使用 RGB 表示，比如 rgb(128, 128, 128)   ，如果想要加上 alpha 通道，可以使用 RGBA，比如 rgba(128, 128, 128, 0.5)，也可以使用十六进制格式，比如 #ccc
		/// </para>
		/// </summary>
		public dynamic backgroundColor { get; set; }  = "transparent";

		/// <summary>
		/// 标题的边框颜色。支持的颜色格式同 backgroundColor。
		/// </summary>
		public dynamic borderColor { get; set; }  = "#ccc";

		/// <summary>
		/// 标题的边框线宽。
		/// </summary>
		public dynamic borderWidth { get; set; }  = 0;

		/// <summary>
		/// 圆角半径，单位px，支持传入数组分别指定 4 个圆角半径。
		/// 如:
		/// <para>number/Array</para>
		/// </summary>
		public dynamic borderRadius { get; set; }  = 0;

		/// <summary>
		/// 图形阴影的模糊大小
		/// <para>
		/// 该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果
		/// </para>
		/// <para>
		/// 注意
		/// </para>
		/// <para>
		/// 此配置项生效的前提是，设置了 show: true 以及值不为 tranparent 的背景色 backgroundColor
		/// </para>
		/// </summary>
		public dynamic shadowBlur { get; set; } 

		/// <summary>
		/// 阴影颜色。支持的格式同color。
		/// 注意。此配置项生效的前提是，设置了 show: true。
		/// </summary>
		public dynamic shadowColor { get; set; } 

		/// <summary>
		/// 阴影水平方向上的偏移距离。
		/// 注意。此配置项生效的前提是，设置了 show: true。
		/// </summary>
		public dynamic shadowOffsetX { get; set; }  = 0;

		/// <summary>
		/// 阴影垂直方向上的偏移距离。
		/// 注意。此配置项生效的前提是，设置了 show: true。
		/// </summary>
		public dynamic shadowOffsetY { get; set; }  = 0;

	}
}